package com.smart.common.entities.core;

import io.ebean.Model;
import io.ebean.annotation.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;

import javax.persistence.MappedSuperclass;
import javax.persistence.Version;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 抽象模型根模型
 *
 * @author 夏绪秋
 * @date 2022-08-12
 */
@MappedSuperclass
@Getter
@Setter
public abstract class BaseModel extends Model implements Serializable {


    /**
     * 数据创建时间
     */
    @WhenCreated
    @ApiModelProperty("数据创建时间")
    private LocalDateTime createTime;


    /**
     * 数据创建人
     */
    @WhoCreated
    @ApiModelProperty("数据创建人")
    private String createBy;

    /**
     * 数据修改时间
     */
    @WhenModified
    @ApiModelProperty("数据修改时间")
    private LocalDateTime updateTime;


    /**
     * 数据修改人
     */
    @WhoModified
    @ApiModelProperty("数据修改人")
    private String updateBy;

    /**
     * 乐观锁版本号
     */
    @Version
    @ApiModelProperty("乐观锁版本号")
    private long version;


    /**
     * 逻辑删除标志
     */
    @SoftDelete
    @ApiModelProperty("逻辑删除标志")
    private boolean deleted;
}
